package gervosou;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import java.awt.ScrollPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JSeparator;
import javax.swing.JList;
import java.awt.Choice;
import javax.swing.JComboBox;

public class VueDepotArgent extends Vue {

	private Societe _societe ;
	private CompteSociete _compteS = null;
	private ClientPhysique _clientP;
	private ComptePerso _compteP = null;
	private JPanel contentPane;
	
	private JButton btnConsulter;
	private JButton btnQuitter;
	private JButton btnEnregistrer;
	private JButton btnAnnuler;
	private JTextField textFieldMontant;
	private JTextField textFieldNumCompte;
	/**
	 * Create the frame.
	 */
	public VueDepotArgent(Controleur controleur) {
		super(controleur);
		setTitle("Depot d'argent");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 484, 309);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		
		//separator////////////////////////////////////
		JSeparator separator = new JSeparator();
		separator.setBounds(226, 145, -50, 2);
		contentPane.add(separator);
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(89, 145, 328, -11);
		contentPane.add(separator_1);
		
		JSeparator separator_2 = new JSeparator();
		separator_2.setBounds(60, 145, 367, 16);
		contentPane.add(separator_2);
		
		JLabel lblNumCompte = new JLabel("Numéro de compte : ");
		lblNumCompte.setBounds(50, 34, 148, 29);
		contentPane.add(lblNumCompte);
		////////////////////////////////////////////////
		
		
		btnConsulter = new JButton("Consulter");
		btnConsulter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int numCompte = Integer.parseInt(textFieldNumCompte.getText());
				// liaison de la vue avec l'objet observe
				if(getControleur().rechComptePerso(numCompte) != null) {
					setComptePerso (getControleur().rechComptePerso(numCompte));
				}
				else 
					setCompteSociete (getControleur().rechCompteSociete(numCompte));
				}
			});
		btnConsulter.setBounds(277, 93, 117, 29);
		contentPane.add(btnConsulter);
		
		btnQuitter = new JButton("Quitter");
		btnQuitter.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					getControleur().fermerVue(VueDepotArgent.this);}
		});
		btnQuitter.setBounds(80, 93, 117, 29);
		contentPane.add(btnQuitter);
		
		btnEnregistrer = new JButton("Enregistrer");
		btnEnregistrer.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					Compte c = null;
					if(getComptePerso()!= null)
						c = getComptePerso();
					else 
						c = getCompteSociete();
					float m = Float.parseFloat(textFieldMontant.getText());
					getControleur().depotArgent(c, m);
					getControleur().fermerVue(VueDepotArgent.this);}
		});
		btnEnregistrer.setBounds(277, 216, 117, 29);
		contentPane.add(btnEnregistrer);
		
		
		btnAnnuler = new JButton("Annuler");
		btnAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueDepotArgent.this);
				getControleur().ConsultCompteSociete();
			};
		});
		btnAnnuler.setBounds(80, 216, 117, 29);
		contentPane.add(btnAnnuler);
		
		JLabel lblMontant = new JLabel("Montant :");
		lblMontant.setBounds(50, 173, 61, 15);
		contentPane.add(lblMontant);
		
		textFieldMontant = new JTextField();
		textFieldMontant.setBounds(196, 173, 114, 19);
		contentPane.add(textFieldMontant);
		textFieldMontant.setColumns(10);
		
		textFieldNumCompte = new JTextField();
		textFieldNumCompte.setColumns(10);
		textFieldNumCompte.setBounds(196, 39, 114, 19);
		contentPane.add(textFieldNumCompte);
	}
	///////////////////////////////////////////////////

	/**
	 * definition des etats de la fenetre
	 */
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			textFieldNumCompte.setEditable(true);
			textFieldMontant.setEditable(false);
			btnConsulter.setEnabled(true);
			btnQuitter.setEnabled(true);
			btnEnregistrer.setEnabled(false);
			btnAnnuler.setEnabled(false);

			break;
		}
		case finale: {
			textFieldNumCompte.setEditable(false);
			textFieldMontant.setEditable(true);
			
			btnConsulter.setEnabled(false);
			btnQuitter.setEnabled(true);
			btnAnnuler.setEnabled(true);
			btnEnregistrer.setEnabled(true);
			
			break;
			}
		}
	}
	
	private CompteSociete getCompteSociete() {
		return _compteS;
	}
	private void setCompteSociete(CompteSociete cs) {
		 _compteS = cs;
	}

	private void setComptePerso(ComptePerso compte) {
		_compteP = compte;
	}
	private ComptePerso getComptePerso() {
		return _compteP;
	}
	
	private Societe getSociete() {
		return _societe;
	}
	
	private void setSociete(Societe soc) {
		 _societe = soc;
	}
	
	private void setClientP(ClientPhysique clp) {
		 _clientP = clp;
	}
}
